$(function () {
    //初始化查询/重置按钮
    var oTable = new TableInit();
    oTable.Init();
    //初始化页面上面的按钮事件
    var button = new ButtonInit();
    button.Init();
});
//全局变量
var Role = {
    table: $('#tb_role_departments'),
    url: "/sso/admin/role/list",
};
//初始化表格列
Role.initColumns = function () {
    var columns = [
        {checkbox: true},
        {field: 'roleName', title: '角色名称'},
        {field: 'roleTips', title: '角色描述'},
        {
            field: 'Button', title: '操作', align: 'center', events: operateEvents, formatter: AddFunctionAlty
        }];
    return columns;
};
//查询参数
var queryParams = function (params) {
    var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
        pageSize: params.limit,   //页面大小
        pageNumber: params.offset/params.limit+1,  //显示第几页
        roleName: $("#txt_search_roleName").val() || undefined,
    };
    return temp;
}

//初始化按钮
var ButtonInit = function () {
    var oInit = new Object();
    oInit.Init = function () {
        //初始化页面上面的按钮事件
        $("#btn_query").click(function () {
            Role.table.bootstrapTable("refresh");
        });
        $("#btn_reset").click(function () {
            $('#formSearch')[0].reset();
            Role.table.bootstrapTable("refresh");
        });
        $("#btn_add").click(function () {
            var page = "role/add_role";
            parent.layer.open({
                type: 2,
                title: '添加角色',
                shadeClose: true,
                //maxmin: true, //允许全屏最小化
                fixed: false, //不固定
                area: ['420px', '250px'],
                content: ['/sso/admin/goToUrl?url=' + page, 'no'],
                closeBtn: 1,
                isOutAnim: true,//关闭动画,
                end: function () {
                    Role.table.bootstrapTable("refresh");
                }
            });
        });
        $("#btn_delete").click(function () {
            var row = Role.table.bootstrapTable('getSelections');
            if (row.length < 1) {
                layer.msg('请至少选中一条数据', {icon: 6});
            } else {
                var ids = "";
                for (var i = 0; i < row.length; i++) {
                    if (i == 0 || i == "0") {
                        ids += row[i].id;
                    } else {
                        ids += "," + row[i].id;
                    }
                }
                delRole(ids);
            }
        });
    };
    return oInit;
}

//初始化表格
var TableInit = function () {
    var oTableInit = {};
    //初始化Table
    oTableInit.Init = function () {
        Role.table.bootstrapTable({
            url: Role.url,         //请求后台的URL（*）
            method: 'post',                      //请求方式（*）
            toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                   //是否显示分页（*）
            sortable: false,                     //是否启用排序
            sortOrder: "asc",                   //排序方式
            queryParams: queryParams,//传递参数（*）
            columns: Role.initColumns(),
            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1,                       //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: [5, 10, 25, 50, 100],        //可供选择的每页的行数（*）
            search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: true,
            showColumns: true,                  //是否显示所有的列
            showRefresh: false,                  //是否显示刷新按钮
            minimumCountColumns: 1,             //最少允许的列数
            clickToSelect: true,                //是否启用点击选中行
            //height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "id",                     //每一行的唯一标识，一般为主键列
            showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                   //是否显示父子表
            //contentType: "application/x-www-form-urlencoded",//不使用JSON方式
            /*                showExport: true,                     //是否显示导出
             exportDataType: "all",              //basic', 'all', 'selected'.*/
            responseHandler: oTableInit.responseHandler,
            /*                ajaxOptions:{
             headers: {"Authorization",""}
             },*/
            onLoadSuccess: function (data) {
                if (data.status == 401) {
                    swal({
                        title: data.message,
                        text: "5秒后自动跳转",
                        type: "warning",
                        timer: 5000,
                        showCancelButton: true,
                        confirmButtonColor: "#DD6B55",
                        confirmButtonText: "去登录",
                        cancelButtonText: "取消",
                        closeOnConfirm: false
                    }, function () {
                        window.location.reload();
                    });
                }
            },
            onLoadError: function (data) {
                alert("数据加载失败");
            }
        });
    };

    window.operateEvents = {
        'click #TableEditor': function (e, value, row, index) {
            var url = "/sso/admin/role/toEditPage?id=" + row.id;
            parent.layer.open({
                type: 2,
                title: '添加角色',
                shadeClose: true,
                //maxmin: true, //允许全屏最小化
                fixed: false, //不固定
                area: ['420px', '250px'],
                content: [url, 'no'],
                closeBtn: 1,
                isOutAnim: true,//关闭动画,
                end: function () {
                    Role.table.bootstrapTable("refresh");
                }
            });
        },
        'click #TableDelete': function (e, value, row, index) {
            delRole(row.id);
        },
        'click #TableAllotRes': function (e, value, row, index) {
            var url = "/sso/admin/role/toAllotResPage?roleId=" + row.id;
            parent.layer.open({
                type: 2,
                title: '资源分配',
                shadeClose: true,
                //maxmin: true, //允许全屏最小化
                fixed: true, //不固定
                area: ['500px', '500px'],
                content: [url],
                closeBtn: 1,
                isOutAnim: true,//关闭动画,
                end: function () {
                    Role.table.bootstrapTable("refresh");
                }
            });
        }
    }

    oTableInit.responseHandler = function (res) { //数据筛选
        if (res) {
            return {
                "rows": res.records,
                "total": res.total
            };
        } else {
            return {
                "rows": [],
                "total": 0
            };
        }
    }
    return oTableInit;
};

function AddFunctionAlty(value, row, index) {
    return [
        '<button id="TableEditor" class="btn btn-primary  btn-sm btn-outline" style="margin-right:2px;" type="button"><i class="fa fa-pencil"></i>&nbsp;修改</button>',
        '<button id="TableDelete" class="btn btn-primary  btn-sm btn-outline" style="margin-right:2px;" type="button"><i class="fa fa-remove"></i>&nbsp;删除</button>',
        '<button id="TableAllotRes" class="btn btn-primary  btn-sm btn-outline" style="margin-right:2px;" type="button"><i class="fa fa-remove"></i>&nbsp;分配权限</button>'
    ].join("");
}

function delRole(roleIds){
    layer.confirm('确定要删除吗？',function(index){
        layer.close(index);
        var loadIndex = layer.load(1);
        $.get("/sso/admin/role/remove",{ids:roleIds},function(data,status){
            if(data.status == 200){
                $("#tb_departments").bootstrapTable("refresh");
                layer.msg("删除角色成功");
            }else{
                layer.msg("删除角色失败，请重试");
            }
            layer.close(loadIndex);
        });
    });
}




